﻿$(document).ready(
            function () {
                // 初始化登录对象
                G3_Login();
                $(".dl_r").click(function () {
                    $("#login1").hide();
                    $("#login2").fadeIn();
                });
                $(".dl_r2").click(function () {
                    $("#login2").hide();
                    $("#login1").show();
                });
            }
        )
///面向对象原型模式
var G3_Login = function () {
    return new G3_Login.fn.init();
}
G3_Login.fn = G3_Login.prototype = {
    init: function () {
        $("#txtUserName").focus();
        $("#btnLogin").click(
                    function () { G3_Login.fn.onclick(); }
                );
        //        $("#btnReset").click(
        //                    function () { G3_Login.fn.onreset(); }
        //                );
        $("#validimg").click(
                    function () { G3_Login.fn.validCodeGenerator(); }
                );
        //        jQuery(document).bind('keydown', function (event) {
        //            //此处写按快捷键执行的函数代码
        //            if (event.keyCode == 13) {
        //                $("#btnLogin").click();
        //            }
        //        });
        $(document).keydown(function (event) {
            if (event.keyCode == 13) {

                $("#btnLogin").click();
            }
        });
        $("#contents").append('<input id="btnflag" type="hidden">');
        return this;
    },
    onclick: function () {
        if ($("#btnflag").val() == "no")
            return;

        G3_Login.fn.setNoLogin();

        var loginName = $("#txtUserName").val();
        var pwd = $("#pwd").val();
        var validcode = $("#validcode").val();
        if (loginName.length == 0) {
            $.messager.alert('系统消息', '用户名不能为空！', 'info', function () {
                G3_Login.fn.setLogin();
                $("#txtUserName").focus();
            });
            $(".panel-tool-close").css("display", "none"); //隐藏提示框右上角关闭按钮
            $("#txtUserName").focus();
            return;
        }
        if (validcode.length == 0) {
            $.messager.alert('系统消息', '验证码不能为空！', 'info', function () {
                G3_Login.fn.setLogin();
                $("#validcode").focus();
            });
            $(".panel-tool-close").css("display", "none");
            $("#validcode").focus();
            return;
        }
        $.ajax(
        {
            url: 'Ajax/Login.ashx?Method=G3_Login',
            dataType: "text",
            async: false,
            cache: false,
            data: { loginname: loginName, password: pwd, validcode: validcode, random: Math.random() },
            success: function (data, status) {
                var redirectURL = jQuery.url.param("redirectURL");
                if (data == "ok") {
                    window.location.href = "index.aspx";
                } else if (data == "okt") {
                    window.location.href = "indext.aspx";
                }
                else if (data == "errorvalid") {
                    $.messager.alert('系统消息', '验证码错误！请重新输入！', 'info', function () {
                        G3_Login.fn.setLogin();
                        G3_Login.fn.validCodeGenerator();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();

                }
                else if (data == "usernotexist") {

                    $.messager.alert('系统消息', '用户名不存在！请重新输入！', 'info', function () {
                        G3_Login.fn.setLogin();
                        G3_Login.fn.validCodeGenerator();
                        $("#txtUserName").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#txtUserName").focus();
                }
                else if (data == "errorpassword") {
                    $.messager.alert('系统消息', '密码错误或者此用户未激活，请联系管理员！', 'info', function () {
                        G3_Login.fn.setLogin();
                        G3_Login.fn.validCodeGenerator();
                        $("#pwd").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#pwd").focus();

                } else if (data == "usernotpower") {
                    $.messager.alert('系统消息', '当前用户没有权限登录系统，请联系管理员！', 'info', function () {
                        G3_Login.fn.setLogin();
                        G3_Login.fn.validCodeGenerator();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();

                } else if (data == "licenseerror") {
                    $.messager.alert('系统消息', '校验码未通过或授权不存在', 'info', function () {
                        G3_Login.fn.setLogin();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();
                } else if (data == "userlimit") {
                    $.messager.alert('系统消息', '您的登录已受限，请稍后再试！', 'info', function () {
                        G3_Login.fn.setLogin();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();
                } else if (data == "online") {
                    $.messager.alert('系统消息', '您已经登录，无法重复登录!', 'info', function () {
                        G3_Login.fn.setLogin();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();
                }
                else {
                    $.messager.alert('系统消息', '登录异常，请联系产品负责人，异常代码为：' + data, 'info', function () {
                        G3_Login.fn.setLogin();
                        G3_Login.fn.validCodeGenerator();
                        $("#validcode").focus();
                    });
                    $(".panel-tool-close").css("display", "none");
                    $("#validcode").focus();
                }
            },
            error: function (data, status) {
                $.messager.show({
                    title: '系统消息',
                    msg: '登录异常，请联系产品负责人，异常代码为：' + data,
                    showType: 'slide',
                    width: 300,
                    timeout: 10000,
                    height: 150
                });
                G3_Login.fn.validCodeGenerator();
            }
        }
        );
    },
    onreset: function () {
        $("#txtUserName").val("");
        $("#pwd").val("");
        $("#validcode").val("");
        $("#txtUserName").focus();
    },
    validCodeGenerator: function () {
        $("#validimg").attr("src", "");
        $("#validimg").attr("src", "Ajax/ValidCodeImg.ashx?" + Math.random());
    },
    //设置允许登录标志，回车执行登录
    setLogin: function () {
        $("#btnflag").val("yes");
    },
    //设置禁止登录标志，当弹出消息提示框时，回车不执行登录
    setNoLogin: function () {
        $("#btnflag").val("no");
    },
    needValidcode: true
}
G3_Login.fn.init.prototype = G3_Login.fn; //使用jQuery原型对象覆盖init原型对象

(function (jQuery) {

    jQuery.hotkeys = {
        version: "0.8",

        specialKeys: {
            8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
            20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
            37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
            96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
            104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111: "/",
            112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
            120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta"
        },

        shiftNums: {
            "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
            "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
            ".": ">", "/": "?", "\\": "|"
        }
    };

    function keyHandler(handleObj) {
        // Only care when a possible input has been specified
        if (typeof handleObj.data !== "string") {
            return;
        }

        var origHandler = handleObj.handler,
            keys = handleObj.data.toLowerCase().split(" ");

        handleObj.handler = function (event) {
            // Don't fire in text-accepting inputs that we didn't directly bind to
            if (this !== event.target && (/textarea|select/i.test(event.target.nodeName) ||
                 event.target.type === "text")) {
                return;
            }

            // Keypress represents characters, not special keys
            var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which],
                character = String.fromCharCode(event.which).toLowerCase(),
                key, modif = "", possible = {};

            // check combinations (alt|ctrl|shift+anything)
            if (event.altKey && special !== "alt") {
                modif += "alt+";
            }

            if (event.ctrlKey && special !== "ctrl") {
                modif += "ctrl+";
            }

            // TODO: Need to make sure this works consistently across platforms
            if (event.metaKey && !event.ctrlKey && special !== "meta") {
                modif += "meta+";
            }

            if (event.shiftKey && special !== "shift") {
                modif += "shift+";
            }

            if (special) {
                possible[modif + special] = true;

            } else {
                possible[modif + character] = true;
                possible[modif + jQuery.hotkeys.shiftNums[character]] = true;

                // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
                if (modif === "shift+") {
                    possible[jQuery.hotkeys.shiftNums[character]] = true;
                }
            }

            for (var i = 0, l = keys.length; i < l; i++) {
                if (possible[keys[i]]) {
                    return origHandler.apply(this, arguments);
                }
            }
        };
    }

    jQuery.each(["keydown", "keyup", "keypress"], function () {
        jQuery.event.special[this] = { add: keyHandler };
    });

})(jQuery);